package com.core.util;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;

import com.core.excel.ReadExcel;

public class Uploader extends HttpServlet {
	
	Logger logger = Logger.getLogger(DspUtil.Log4J);

	/**
	 * 
	 */
	private static final long serialVersionUID = 6347827022427270507L;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 String savePath = this.getServletConfig().getServletContext().getRealPath("");
		 savePath = savePath + File.separator + "uploads" + File.separator;
		 logger.debug("上传文件："+ savePath);
		 File f1 = new File(savePath);
		 if(!f1.exists()) {
			 f1.mkdir();
		 }
		 String code = (String)request.getParameter("Code");
		 DiskFileItemFactory fac = new DiskFileItemFactory();  
	        ServletFileUpload upload = new ServletFileUpload(fac);  
	        upload.setHeaderEncoding("utf-8");  
	        List fileList = null;  
	        try {  
	            fileList = upload.parseRequest(request);  
	        } catch (FileUploadException ex) {  
	            return;  
	        }  
	        Iterator<FileItem> it = fileList.iterator();  
	        String name = "";  
	        String extName = "";  
	        String rntMessage = "";
	        while (it.hasNext()) {  
	            FileItem item = it.next();  
	            if (!item.isFormField()) {  
	                name = item.getName();  
	                long size = item.getSize();  
	                String type = item.getContentType();  
	                logger.info(size + " " + type);  
	                if (name == null || name.trim().equals("")) {  
	                    continue;  
	                }  
	                //扩展名格式：    
	                if (name.lastIndexOf(".") >= 0) {  
	                    extName = name.substring(name.lastIndexOf("."));  
	                }  
	                File file = null;  
	                do {  
	                    //生成文件名：  
	                    name = UUID.randomUUID().toString();  
	                    file = new File(savePath + name + extName);  
	                } while (file.exists());  
	                File saveFile = new File(savePath + name + extName);  
	                try {  
	                    item.write(saveFile); 
	                    logger.info("文件上传成功......");
	                    logger.info("开始读取excel中的数据......");
	                    ReadExcel re = new ReadExcel();
	                    rntMessage =  re.run(savePath + name + extName, code);
	                    logger.info("数据读取完成......");
	                } catch (Exception e) {
	                	rntMessage = "{success:false,message:"+ e.getLocalizedMessage() +"}";
	                    e.printStackTrace();  
	                } finally{
	                	
	                }
	            }  
	        }  
	        response.getWriter().print(rntMessage);  
	}
}
